CI: pin jupyter-book<2 in the execution test workflows - #596
Conversation
Since jupyter-book 2.x became the default pip target the unpinned install has left every scheduled run failing at the build step with "jb: command not found" — no execution signal on any OS since May. - pin "jupyter-book<2" in all three execution-*.yml, mirroring the <2.0 pin in environment.yml (the repo stays on jupyter-book 1.x until a JB2-compatible theme exists) - drop the duplicate bare "pip install jupyter-book" in execution-win.yml - add workflow_dispatch so the workflows can be validated on demand instead of waiting for the next scheduled run Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR fixes the scheduled “Execution Tests [Latest Anaconda]” GitHub Actions workflows that started failing once pip install jupyter-book began resolving to jupyter-book 2.x (which no longer provides the jb CLI these workflows use). It pins jupyter-book to <2 in those workflows and adds a manual trigger so the jobs can be run on demand.
Changes:
- Added
workflow_dispatch:to the Linux/OSX/Windows execution-test workflows to allow manual runs. - Pinned
jupyter-bookto<2in all three workflows (with an explanatory comment) sojb build ...is available again. - Removed the redundant separate
pip install jupyter-bookline in the Windows workflow.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| .github/workflows/execution-linux.yml | Adds manual trigger and pins jupyter-book<2 to restore jb CLI for lecture builds. |
| .github/workflows/execution-osx.yml | Adds manual trigger and pins jupyter-book<2 to restore jb CLI for lecture builds. |
| .github/workflows/execution-win.yml | Adds manual trigger, removes duplicate pip install jupyter-book, and pins jupyter-book<2 to restore jb CLI. |
Validation — all three OSes green ✅The
No execution drift surfaced despite the long gap — latest Anaconda + Worth knowing: these are the first green runs of the execution workflows since 2025-11-02 — 353 consecutive scheduled runs had failed (274 linux / 40 osx / 39 win). The 🤖 Generated with Claude Code |
Closes #569.
Every scheduled run of the three "Execution Tests [Latest Anaconda]" workflows has failed with
jb: command not foundsince jupyter-book 2.x became the default pip target (~10 weeks) — the 2.x line drops thejbCLI, so the unpinnedpip install jupyter-booksilently swapped the toolchain out from under the build step.Decision context: the repo stays firmly on
jupyter-book<2until a JB2-compatible theme exists (the mystmd migration is tracked separately in #593 / PR #363). That keeps these workflows relevant for their stated purpose — testing the lectures against the latest Anaconda — so the fix pins only jupyter-book rather than switching toenvironment-file: environment.yml, which would have made them near-duplicates ofcache.yml.Changes (all three
execution-*.yml)pip install "jupyter-book<2" ..., mirroring the<2.0pin inenvironment.yml, with a comment explaining the pin so it isn't "cleaned up" later.execution-win.yml: dropped the duplicate barepip install jupyter-bookthat preceded the full install line.workflow_dispatch:— the workflows were schedule-only, which is why this breakage could only be observed on the daily/weekly cadence. With the trigger, the fix (and any future change) can be validated on demand.Verification
A
workflow_dispatchrun of the linux workflow against this branch is the real test — a greencache.ymlproves nothing here since it installs from the pinnedenvironment.yml. Note that after ~10 weeks without signal, the first run may surface genuine execution drift (new package versions from latest Anaconda) beyond the install fix; those would be real findings, not regressions from this PR.🤖 Generated with Claude Code